package businesslogicservice;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

import po.choosepo.Choose;
import po.choosepo.ChooseApproval;
import po.coursepo.Course;
import po.coursepo.CourseID;
import po.userpo.StuID;
import vo.Limitation;
import vo.publishcoursevo.AppointedCourseVO;
import vo.publishcoursevo.PlatformCourseVO;
import vo.publishcoursevo.PublishCourseVO;
import Enum.Faculty;
import Enum.ResultMessage;

public interface CourseControllerImpli extends Remote{
	public ResultMessage addChoose(Choose choose) throws RemoteException;
	
	public ResultMessage firChoose(ArrayList<ChooseApproval> chooseList) throws RemoteException;
	
	public ResultMessage pulishCourse(ArrayList<PublishCourseVO> list) throws RemoteException;
	
	public ResultMessage publishAppointedCourse(ArrayList<AppointedCourseVO> list) throws RemoteException;
	
	public ResultMessage quitCourse(CourseID courseId , StuID stuId) throws RemoteException;
	
	public ArrayList<Course> ShowCourse(ArrayList<Limitation> limit) throws RemoteException;
	
	public ArrayList<AppointedCourseVO> getPublishedAppointed(Faculty f) throws RemoteException;
	
	public ArrayList<PublishCourseVO> getPublishedCourse(String tchId) throws RemoteException;
	
	public ResultMessage publishPlatformCourse(ArrayList<PlatformCourseVO> list) throws RemoteException;
	
	public ArrayList<PlatformCourseVO> getPublishedPlatform() throws RemoteException;
	
	public int getCreditRemained(StuID id)throws RemoteException;
	
	public ArrayList<Course> getFirChoosed(ArrayList<Limitation> limit) throws RemoteException;
}
